package com.sugon.dao;

import com.sugon.entity.DevAmPlanEntity;
import com.sugon.modules.device.model.vo.DevMaintenancePlanItemDetailVO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 设备自主维护计划表Dao
 *
 * @author YuXD
 * @date 2023-01-23
 */
public interface DevAmPlanDao extends BaseDao<DevAmPlanEntity> {

    /**
     * 根据设备维护计划ID列表获取维护计划详情LIST
     * 维护计划项必须是有效的
     *
     * @param planIdList 计划ID列表
     * @return
     */
    List<DevMaintenancePlanItemDetailVO> getByPlanIds(@Param("planIdList") List<String> planIdList);

    /**
     * 根据设备维护计划ID获取
     * 根据当前维护计划生成的所有工单的维护项和执行情况
     * 维护计划项必须是有效的
     *
     * @param planId 计划ID
     * @return
     */
    List<DevMaintenancePlanItemDetailVO> getByPlanId(@Param("planId") String planId);

    /**
     * 查询同一产线存在维护日期交叉且处于审核中或已通过审核的维护计划数
     * 返回的维护计划数需要满足以下条件：
     * 1、同一产线
     * 2、产线维护日期存在交叉
     * 3、维护计划未删除
     * 4、处于审核中或已审核通过
     * 5、排除自己
     *
     * @param devLineId 设备产线ID
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return
     */
    int countLineSERangeRepeat(@Param("planId") String planId,@Param("devLineId") String devLineId, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

}
